/**
 * 玩家基础数据结构
 */
interface PlayerStorageData {
  /** 基础信息 */
  basic: {
    /** 唯一标识符（8位字母数字组合） */
    uid: string;
    /** 头像资源路径 */
    avatar: string;
  };
}

/** 技能本地储存数据 */
export interface SkillStorageData {
  /** 技能ID */
  id: number;
  /** 技能等级 */
  level: number;
}

/**
 * 角色本地储存数据
 * 设计要点：
 * - 角色唯一ID(ROLE_开头)
 */
export interface RoleStorageData {
  /** 角色元数据 */
  meta: {
    /** 唯一标识符（8位字母数字组合） */
    uid: string;
    /** 角色名称 */
    name: string;
    /** 角色职业ID */
    classId: number;
    /** 角色创建时间 */
    created: string;
  };
  /** 角色背包 */
  inventory: {
    /** 背包物品 */
    items: {
      /** 物品ID */
      id: number;
      /** 物品数量 */
      count: number;
    }[];
  };
  /** 角色装备 */
  equipment: {
    /** 武器 */
    weapon: number;
    /** 防具 */
    armor: number;
    /** 饰品 */
    accessory: number;
  };
  /** 学习技能 */
  skills: SkillStorageData[];
  /** 装备技能 */
  equipSkills: {
    /** 当前装备技能包 */
    current: 'firstSkillPack' | 'secondSkillPack';
    /** 第一技能包 */
    firstSkillPack: {
      /** 是否解锁 */
      isUnlock: boolean;
      skills: {
        skillOneButton?: SkillStorageData;
        skillTwoButton?: SkillStorageData;
        skillThreeButton?: SkillStorageData;
        skillFourButton?: SkillStorageData;
        skillFiveButton?: SkillStorageData;
      };
    };
    /** 第二技能包 */
    secondSkillPack: {
      /** 是否解锁 */
      isUnlock: boolean;
      skills: {
        skillOneButton?: SkillStorageData;
        skillTwoButton?: SkillStorageData;
        skillThreeButton?: SkillStorageData;
        skillFourButton?: SkillStorageData;
        skillFiveButton?: SkillStorageData;
      };
    };
  };
}

/** 控件布局信息 */
export interface UILayoutInfo {
  /** 控件宽度 */
  width: number;
  /** 控件高度 */
  height: number;
  /** 控件左边绝对位置百分比 */
  left: number;
  /** 控件上边绝对位置百分比 */
  top: number;
}

/** 关卡界面布局数据 */
export interface LevelLayoutData {
  moveJoysitick: UILayoutInfo;
  attackJoysitick: UILayoutInfo;
  skillOneButton: UILayoutInfo;
  skillTwoButton: UILayoutInfo;
  weaponOne: UILayoutInfo;
  weaponTwo: UILayoutInfo;
}

/** 内存中的存档数据 */
export interface GameSaveData {
  /** 玩家信息 */
  player: PlayerStorageData;
  /** 激活角色 */
  activeRole: number;
  /** 游戏人物 */
  roles: RoleStorageData[];
  /** 游戏配置 */
  gameConfig: {
    /** 关卡界面布局 */
    levelLayout: {
      /** 当前使用的布局 */
      current: 'userOne' | 'userTwo';
      /** 用户自定义布局1 */
      userOne: LevelLayoutData;
      /** 用户自定义布局2 */
      userTwo: LevelLayoutData;
    };
  };
}
